今天來到了 Pandas 的最後一天,除了介紹第三種資料型態: Index 之外,也為介紹 Pandas 的其他功能。讓我們一起來看看吧!
Index 這個資料型態在 Pandas 當中,是一個不能修改的陣列,也就跟 Python 當中的 tuple 很像。
建立一個 Index
x = pd.Index([1, 2, 3, 4, 5])
取值的方式跟過去介紹過的 Series 或 DataFrame 其實一樣
x[0]
會得到 1
x[2:4]
會得到 [3, 4]
我們可以針對兩個 Index 做集合的運算,像是 AND
y = pd.Index([1, 3, 5, 7, 9])
x & y
會得到 [1, 3, 5]
或是 OR
x | y
會得到 [1, 2, 3, 4, 5, 7, 9]
介紹完 Pandas 的三種資料型態以及基本的操作之後,讓我們來小試身手一下吧。
Pandas 可以讀寫多種不同格式的檔案,我們可以在下面這張表找到相對應的讀寫方法
現在我們要來讀取我電腦中的 .csv 檔案,所以就用 pd.read_csv
import numpy as np
import pandas as pd
data = pd.read_csv("/Users/canopus/Desktop/sample_data.csv")
print(data)
得到結果
Name Age Height Weight Marriage Own Cars
0 Adam 20 165 69 NO NO
1 Barton 32 169 77 NO YES
2 Clark 28 177 80 YES NO
3 Derrick 24 160 75 NO NO
4 Frederic 24 162 66 YES YES
5 Gabriel 28 177 60 YES YES
6 Harvey 20 192 98 NO YES
7 Ira 32 180 60 YES YES
8 Jacob 28 163 62 NO NO
9 Kerr 31 180 78 YES YES
接下來,我們來試試看大家常在 excel 裡面做的事情:利用 pivot table 來分析數據。
假設我們要來看看有多少人擁有車子、多少人沒有車子,這時候我們可以定義 pivot table 的欄位為Own Cars
裡面的值,這裡的話就是 YES
和 NO
。
接著,我們可以來定義一下列的資料要怎麼呈現,這裡我們就很簡單的計算 Name
的數量即可。寫成 Pandas 裡面的式子會是下面這樣
pd.pivot_table(data, values=['Name'], columns=['Own Cars'], aggfunc='count')
會得到結果
Own Cars NO YES
Name 4 6
假設我們今天突然很有興趣要分析有結婚 v.s. 沒有結婚的人口數據組成,這裡一樣來定義一下欄位,就是為Marriage
裡面的值 YES
和 NO
。
在不同的列上面,我們希望呈現 Age
, Height
, Weight
的平均值,因此這裡除了設定我們要看到 values
之外,在後面我也定義了資料整合的方式 aggfunc=np.mean
,代表著我們取平均值。
寫成 Pandas 裡面的式子為:
pd.pivot_table(data, values=['Age','Height','Weight'], columns=['Marriage'], aggfunc=np.mean)
會得到結果
Marriage NO YES
Age 24.8 28.6
Height 169.8 175.2
Weight 76.2 68.8
Pandas 內建繪製資料圖表的功能,像是直方圖、散佈圖、圓餅圖等等,這裡我們先來試試最簡單的散佈圖
hist = data.plot.scatter(x='Age', y='Weight', c='#FF6606')
這裡我們定義了 x 與 y 軸要呈現的資訊,同時修改一下散佈圖上面圖點的顏色
Pandas 的介紹就到這裡告一段落,接下來會介紹另外一個 Python 好用的繪圖 Library: Matplotlib
我們明天見囉!